#pragma once
#include "SortStats.h"
#include <cuda_runtime.h>
#include <cstdint>

/* ---- 可选算法 ---- */
enum class Algo {
    Bubble, Insertion, Selection,
    BinaryInsertion, Shell,
    Merge, Quick, DualPivotQuick,
    Heap,
    Counting, Bucket, Radix, Tim,
    STDSort, ParMerge, ParQuick, ParTim, Bitonic
};

struct Params {
    uint32_t *data;
    int N;
    Algo algo;
};

void launchSort(Params p, cudaStream_t s, SortStats *d_stats);
